﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Baustein
{
    class CBaustein
    {
        protected bool[] bEingaenge;

        public bool[] BEingaenge
        {
            get { return bEingaenge; }
            set { bEingaenge = value; }
        }
        public void set(int i, bool b)
        {
            if ((i < this.iAnzEin) && (i >= 0))
            {
                bEingaenge[i] = b;
            }
        }
        protected bool[] bInvert;

        public bool[] BInvert
        {
            get { return bInvert; }
            set { bInvert = value; }
        }
        public void setInvert(int i, bool b) {
            if ((i < this.iAnzEin) && (i >= 0)) {
                bInvert[i] = b;
            }
        }
        
        protected bool bAusgang = false;

        public bool BAusgang
        {
            get { return bAusgang; }
            set { bAusgang = value; }
        }
        protected int iAnzEin = 0;

        public int IAnzEin
        {
            get { return iAnzEin; }
            set { iAnzEin = value; }
        }

        protected string strName = "Baustein";

        public string StrName
        {
            get { return strName; }
            set { strName = value; }
        }

        public CBaustein(int iAnzEin, string strName)
        {
            this.iAnzEin = iAnzEin;
            this.strName = strName;
            bEingaenge = new bool[iAnzEin];
            bInvert = new bool[iAnzEin];

            for (int i = 0; i < iAnzEin; i++)
            {
                bEingaenge[i] = false;
                bInvert[i] = false;
            }
        }

        public CBaustein() // Null-Argumente-Konstruktor
        {
        }

        public string report()
        {
            string str = "";
            //str = "\r\nName des Bausteins: " + this.strName;
            str += "\r\nAnzahl Eingänge: " + this.iAnzEin.ToString();
            str += "\r\nAusgang: " + this.bAusgang.ToString();
            // alle Eingänge ausgeben, mit Index
            // Eingang[0] = true usw.
            for (int i = 0; i < iAnzEin; i++)
            {
                str += "\r\nEing[" + i.ToString() + "] = " + bEingaenge[i].ToString();
                
                str += " Inv " + bInvert[i].ToString();
                if (bInvert[i] == true)
                {
                    str += " Erg " + (!(bEingaenge[i])).ToString();
                }
                else
                {
                    str += " Erg " + bEingaenge[i].ToString();
                }
                 
            }
            return str;
        }
    }
}
